home *** CD-ROM | disk | FTP | other *** search
- // CRCMeDlg.cpp : implementation file
- //
-
- #include "stdafx.h"
- #include "CRCMe.h"
- #include "Nag.h"
- #include "CRCMeDlg.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CCRCMeDlg dialog
-
- CCRCMeDlg::CCRCMeDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CCRCMeDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CCRCMeDlg)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
-
- void CCRCMeDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CCRCMeDlg)
- // NOTE: the ClassWizard will add DDX and DDV calls here
- //}}AFX_DATA_MAP
- }
-
- BEGIN_MESSAGE_MAP(CCRCMeDlg, CDialog)
- //{{AFX_MSG_MAP(CCRCMeDlg)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CCRCMeDlg message handlers
-
-
- BOOL CCRCMeDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
-
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
-
- /*******Ulo₧enφ °et∞zc∙ tak, aby nebyli viditelnΘ v W32Dasm referenci °et∞zc∙.
- V hexadecimßlnφm editoru jako je nap°. Hiew si vÜechny °et∞zce bez problΘm∙ p°eΦtete:-(*******/
- BYTE BPXfailed[23] = {0x4E,0x61,0x6C,0x65,0x7A,0x65,0x6E,0x20,0x42,0x50,0x58,0x20,0x62,0x72,0x65,0x61,0x6B,0x70,0x6F,0x69,0x6E,0x74,0};
- BYTE Library[9] = {0x4B,0x65,0x72,0x6E,0x65,0x6C,0x33,0x32,0};
- BYTE APIC[12] = {0x43,0x72,0x65,0x61,0x74,0x65,0x46,0x69,0x6C,0x65,0x41, 0};
- BYTE APIR[9] = {0x52,0x65,0x61,0x64,0x46,0x69,0x6C,0x65,0};
- BYTE Openfailed[21] = {0x53,0x6F,0x75,0x62,0x6F,0x72,0x20,0x6E,0x65,0x6C,0x7A,0x65,0x20,0x6F,0x74,0x65,0x76,0xF8,0xED,0x74,0};
- BYTE CRCok[26] = {0x4B,0xF3,0x64,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D, 0x75,0x20,0x6E,0x65,0x62,0x79,0x6C,0x20,0x7A,0x6D,0xEC,0x6E,0xEC, 0x6E,0};
- BYTE CRCfailed[24] = {0x4B,0xF3,0x64,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x75,0x20,0x62,0x79,0x6C,0x20,0x7A,0x6D,0xEC,0x6E,0xEC,0x6E,0};
- BYTE Soubor[10] = {0x43,0x52,0x43,0x4D,0x65,0x2E,0x65,0x78,0x65,0};
-
- DulezitaOblast:
- CNag nag; // CNag - t°φda standardnφho dialogu
- nag.DoModal(); // zobrazenφ dialogu
-
- HMODULE handle = GetModuleHandle((char*)Library); // kernel32 ImageBase
- FARPROC Create = GetProcAddress(handle,(char*)APIC); // CreateFileA
- FARPROC Read = GetProcAddress(handle,(char*)APIR); // ReadFile
-
- byte CMem[4],RMem[4];
- memcpy(&CMem,Create,sizeof CMem);
- memcpy(&RMem,Read,sizeof RMem);
-
- /*******Kontrola p°φtomnosti bpx breakpointu na prvnφch Φty°ech bajtech funkcφ CreateFileA a ReadFile*******/
- for (int i = 0; i < 5; i++)
- {
- if (CMem[i] == 0xCC || RMem[i] == 0xCC)
- {
- SetDlgItemText(IDC_CRCSTATUS,(char*)BPXfailed);
- return TRUE;
- }
- }
-
- DWORD Adresa = (DWORD)&Soubor[0];
- HANDLE File;
- DWORD NOBR;
-
- __asm
- {
- push 0
- push FILE_ATTRIBUTE_NORMAL
- push OPEN_EXISTING
- push 0
- push FILE_SHARE_READ
- push GENERIC_READ
- push Adresa
- call Create
- mov File,eax
- }
- // File = CreateFile((char*)Soubor,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); // zφskßnφ handlu souboru
- if (File == INVALID_HANDLE_VALUE)
- {
- // tuto chybu by ochrana m∞la vyhodnotit jako pokus o prolomenφ
- SetDlgItemText(IDC_CRCSTATUS,(char*)Openfailed);
- return TRUE;
- }
-
- DWORD FileSize = GetFileSize(File,NULL);
- BYTE *pMem = new BYTE[FileSize]; // alokace pam∞ti
- Adresa = (DWORD)&NOBR;
-
- __asm
- {
- push 0
- push Adresa
- push FileSize
- push pMem
- push File
- call Read
- }
- // ReadFile(File,pMem, Size,&NOBR,NULL); // naΦtenφ souboru do pam∞ti
-
- /*******V²poΦet kontrolnφho souΦtu*******/
- __asm
- {
- mov eax,offset KonecDulObl
- sub eax,offset DulezitaOblast // EAX = dΘlka kontrolovan²ch dat
- mov ecx,eax
- mov edi,offset DulezitaOblast
- sub edi,400000h
- add edi,pMem // EDI = ukazatel na kontrolovanß data
-
- xor eax,eax
- xor ebx,ebx
- xor esi,esi
- Looop:
- mov al,byte ptr [edi] // naΦtenφ dat
- mul esi // jednoduchΘ nßsobenφ
- add ebx,eax // p°idßnφ v²sledku do EBX
- inc edi // posunutφ se na dalÜφ bajt
- inc esi // zv∞tÜenφ ESI
- loop Looop
- // --> EBX = kontrolnφ souΦet
-
- KonecDulObl:
- cmp ebx,387D0406h
- je ok
- }
- SetDlgItemText(IDC_CRCSTATUS,(char*)CRCfailed);
- delete pMem;
- return TRUE;
-
- ok:
- SetDlgItemText(IDC_CRCSTATUS,(char*)CRCok);
- delete pMem;
- return TRUE;
- }
-
-
- // If you add a minimize button to your dialog, you will need the code below
- // to draw the icon. For MFC applications using the document/view model,
- // this is automatically done for you by the framework.
-
- void CCRCMeDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
-
- SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
-
- // Center icon in client rectangle
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
-
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialog::OnPaint();
- }
- }
-
- HCURSOR CCRCMeDlg::OnQueryDragIcon()
- {
- return (HCURSOR) m_hIcon;
- }
-